import { get, post, put } from '@/utils/request'
import { SystemConfig, ApiResponse } from '@/types'

// 系统配置API
export const systemConfigApi = {
  // 获取系统配置列表
  getList: (params: { group?: string }) => {
    return get<SystemConfig[]>('/system/configs', params)
  },
  
  // 获取配置组
  getByGroup: (group: string) => {
    return get<SystemConfig[]>(`/system/configs/group/${group}`)
  },
  
  // 获取配置详情
  getDetail: (id: string) => {
    return get<SystemConfig>(`/system/configs/${id}`)
  },
  
  // 获取配置值
  getValue: (key: string) => {
    return get<{ value: string }>(`/system/configs/key/${key}`)
  },
  
  // 更新配置
  update: (id: string, value: string) => {
    return put<SystemConfig>(`/system/configs/${id}`, { value })
  },
  
  // 批量更新配置
  batchUpdate: (configs: Array<{ id: string; value: string }>) => {
    return post<ApiResponse>('/system/configs/batch', { configs })
  },
  
  // 获取安全配置
  getSecurityConfig: () => {
    return get('/system/config/security')
  },
  
  // 更新安全配置
  updateSecurityConfig: (data: any) => {
    return put('/system/config/security', data)
  }
}

// 基础配置API
export const basicConfigApi = {
  // 获取所有基础配置
  getAll: () => {
    return systemConfigApi.getByGroup('basic')
  },
  
  // 更新基础配置
  update: (configs: Array<{ id: string; value: string }>) => {
    return systemConfigApi.batchUpdate(configs)
  }
}

// 支付配置API
export const paymentConfigApi = {
  // 获取所有支付配置
  getAll: () => {
    return systemConfigApi.getByGroup('payment')
  },
  
  // 更新支付配置
  update: (configs: Array<{ id: string; value: string }>) => {
    return systemConfigApi.batchUpdate(configs)
  }
}

// 短信配置API
export const smsConfigApi = {
  // 获取所有短信配置
  getAll: () => {
    return systemConfigApi.getByGroup('sms')
  },
  
  // 更新短信配置
  update: (configs: Array<{ id: string; value: string }>) => {
    return systemConfigApi.batchUpdate(configs)
  },
  
  // 发送测试短信
  sendTest: (phone: string) => {
    return post<ApiResponse>('/system/sms/test', { phone })
  }
}

// 邮件配置API
export const emailConfigApi = {
  // 获取所有邮件配置
  getAll: () => {
    return systemConfigApi.getByGroup('email')
  },
  
  // 更新邮件配置
  update: (configs: Array<{ id: string; value: string }>) => {
    return systemConfigApi.batchUpdate(configs)
  },
  
  // 发送测试邮件
  sendTest: (email: string) => {
    return post<ApiResponse>('/system/email/test', { email })
  }
}

// 安全配置API
export const securityConfigApi = {
  // 获取所有安全配置
  getAll: () => {
    return systemConfigApi.getByGroup('security')
  },
  
  // 更新安全配置
  update: (configs: Array<{ id: string; value: string }>) => {
    return systemConfigApi.batchUpdate(configs)
  }
} 